# 二叉树的层序遍历

import collections

# 从上到下搜索
class Solution:

    def layerOrder(self, root) -> list[list[int]]:

        if not root:
            return []
        # 使用队列
        res, queue = [], collections.deque()
        queue.append(root)
        while queue:
            tmp = []
            # 队列中的元素，假设一开始一个，后续会逐渐增多
            for _ in range(len(queue)):
                node = queue.popleft()
                tmp.append(node.val)

                # 为下一层准备, 统计下层的子节点
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)

            res.append(tmp)

        
        return res


